﻿namespace Akso.Authorization
{
    /// <summary>
    /// Defines string constants for application's permission names.
    /// <see cref="AppAuthorizationProvider"/> for permission definitions.
    /// </summary>
    public static class AppPermissions
    {
        //COMMON PERMISSIONS (FOR BOTH OF TENANTS AND HOST)

        public const string Pages = "Pages";

        #region Added by Hollis Yao
        //Basic Data Permissions
        public const string Pages_BasicDataModule = "Pages.BasicDataModuel";
        //---------------------------教室设置-----------------------------------------
        public const string Pages_BasicDataModule_Classrooms = "Pages.BasicDataModule.Classrooms";
        //Pages Button Permissions
        public const string Pages_BasicDataModule_Classrooms_Create = "Pages.BasicDataModule.Classrooms.Create"; //页面新增按钮权限
        public const string Pages_BasicDataModule_Classrooms_Edit = "Pages.BasicDataModule.Classrooms.Edit";//页面编辑按钮权限
        public const string Pages_BasicDataModule_Classrooms_Delete = "Pages.BasicDataModule.Classrooms.Delete";//页面删除按钮权限
        //--------------------------基础代码设置-------------------
        public const string Pages_BasicDataModule_CodeSettings = "Pages.BasicDataModule.CodeSettings";
        //代码组
        public const string Pages_BasicDataModule_CodeGroups_Create = "Pages.BasicDataModule.CodeGroups.Create";//创建代码组根节点
        public const string Pages_BasicDataModule_CodeGroups_Edit = "Pages.BasicDataModule.CodeGroups.Edit";//页面编辑按钮权限
        public const string Pages_BasicDataModule_CodeGroups_ChildCode = "Pages.BasicDataModule.CodeGroups.ChildCode"; //子代码
        //代码
        public const string Pages_BasicDataModule_Codes_Create = "Pages.BasicDataModule.Codes.Create";//新增代码
        public const string Pages_BasicDataModule_Codes_Edit = "Pages.BasicDataModule.Codes.Edit";
        public const string Pages_BasicDataModule_Codes_Delete = "Pages.BasicDataModule.Codes.Delete";

        #region 教务管理
        #region 课程管理
        //教务管理模块权限
        public const string Pages_EduAdminModule = "Pages.EduAdminModule";
        //菜单
        public const string Pages_EduAdminModule_Courses = "Pages.EduAdminModule.Courses";
        //Pages Button Permissions
        public const string Pages_EduAdminModule_Courses_Create = "Pages.EduAdminModule.Courses.Create"; //页面新增按钮权限
        public const string Pages_EduAdminModule_Courses_Edit = "Pages.EduAdminModule.Courses.Edit";//页面编辑按钮权限
        public const string Pages_EduAdminModule_Courses_Delete = "Pages.EduAdminModule.Courses.Delete";//页面删除按钮权限
        #endregion
        #endregion
        #endregion

        public const string Pages_Administration = "Pages.Administration";

        public const string Pages_Administration_Roles = "Pages.Administration.Roles";
        public const string Pages_Administration_Roles_Create = "Pages.Administration.Roles.Create";
        public const string Pages_Administration_Roles_Edit = "Pages.Administration.Roles.Edit";
        public const string Pages_Administration_Roles_Delete = "Pages.Administration.Roles.Delete";

        public const string Pages_Administration_Users = "Pages.Administration.Users";
        public const string Pages_Administration_Users_Create = "Pages.Administration.Users.Create";
        public const string Pages_Administration_Users_Edit = "Pages.Administration.Users.Edit";
        public const string Pages_Administration_Users_Delete = "Pages.Administration.Users.Delete";
        public const string Pages_Administration_Users_ChangePermissions = "Pages.Administration.Users.ChangePermissions";
        public const string Pages_Administration_Users_Impersonation = "Pages.Administration.Users.Impersonation";

        public const string Pages_Administration_Languages = "Pages.Administration.Languages";
        public const string Pages_Administration_Languages_Create = "Pages.Administration.Languages.Create";
        public const string Pages_Administration_Languages_Edit = "Pages.Administration.Languages.Edit";
        public const string Pages_Administration_Languages_Delete = "Pages.Administration.Languages.Delete";
        public const string Pages_Administration_Languages_ChangeTexts = "Pages.Administration.Languages.ChangeTexts";

        public const string Pages_Administration_AuditLogs = "Pages.Administration.AuditLogs";

        public const string Pages_Administration_OrganizationUnits = "Pages.Administration.OrganizationUnits";
        public const string Pages_Administration_OrganizationUnits_ManageOrganizationTree = "Pages.Administration.OrganizationUnits.ManageOrganizationTree";
        public const string Pages_Administration_OrganizationUnits_ManageMembers = "Pages.Administration.OrganizationUnits.ManageMembers";

        public const string Pages_Administration_HangfireDashboard = "Pages.Administration.HangfireDashboard";

        //TENANT-SPECIFIC PERMISSIONS

        public const string Pages_Tenant_Dashboard = "Pages.Tenant.Dashboard";

        public const string Pages_Administration_Tenant_Settings = "Pages.Administration.Tenant.Settings";
        
        //HOST-SPECIFIC PERMISSIONS

        public const string Pages_Editions = "Pages.Editions";
        public const string Pages_Editions_Create = "Pages.Editions.Create";
        public const string Pages_Editions_Edit = "Pages.Editions.Edit";
        public const string Pages_Editions_Delete = "Pages.Editions.Delete";

        public const string Pages_Tenants = "Pages.Tenants";
        public const string Pages_Tenants_Create = "Pages.Tenants.Create";
        public const string Pages_Tenants_Edit = "Pages.Tenants.Edit";
        public const string Pages_Tenants_ChangeFeatures = "Pages.Tenants.ChangeFeatures";
        public const string Pages_Tenants_Delete = "Pages.Tenants.Delete";
        public const string Pages_Tenants_Impersonation = "Pages.Tenants.Impersonation";

        public const string Pages_Administration_Host_Maintenance = "Pages.Administration.Host.Maintenance";
        public const string Pages_Administration_Host_Settings = "Pages.Administration.Host.Settings";
    }
}